// 编写一个 Node.js 脚本，完成以下任务：
// 将指定目录下的所有文件压缩为一个 .zip 文件。
// 解压一个 .zip 文件到指定目录。
// 提示：可以使用第三方模块（如 archiver 或 unzipper）。

// 先安装好 archiver 和 unzipper （npm install archiver、npm install unzipper）
// 导入模块
const fs = await import("fs");
const archiverModule = await import("archiver");
const archiver = archiverModule.default;
const unzipper = await import("unzipper");

// 压缩路径
const path = "./files";
// 压缩包名
const zipName = "./files.zip";
// 解压路径
const unZipPath = "./unZip/files";

// 压缩函数
function zip(path, zipPath) {
  // 创建写入流
  const output = fs.createWriteStream(zipPath);
  // 压缩
  const archive = archiver("zip", { zlib: { level: 9 } });

  // 管道连接
  archive.pipe(output);
  // 添加整个目录到归档中
  archive.directory(path, false);
  // 完成归档
  archive.finalize();

  // 写入流关闭后提示
  output.on("close", () => {
    console.log("压缩完成:", zipPath);
  });
}

// 解压缩函数
function unZip(zipPath, unZipPath) {
  fs.createReadStream(zipPath).pipe(
    // 解压文件到该路径
    unzipper.Extract({ path: unZipPath }).on("close", () => {
      // 解压完成后提示
      console.log("解压缩完成:", unZipPath);
    })
  );
}

// 调用压缩函数（压缩路径，压缩包名）
zip(path, zipName);

// 调用解压函数（压缩包名，解压路径）
unZip(zipName, unZipPath);
